#include "userloginform.h"
#include "ui_userloginform.h"
#include "widget.h"
#include <QButtonGroup>
#include <QDebug>

userLoginForm::userLoginForm(Mainbar *mainbar, QWidget *parent) :
    QWidget(parent),
    ui(new Ui::userLoginForm)
{
    ui->setupUi(this);

    //创建页面
    m_pageUserInfo = new pageUserInfo(mainbar, this);    // 用户信息界面
    m_pageDeviceInfo = new pageDeviceInfo(this);         // 设备信息界面
    m_pageAlarmMgmt = new pageAlarmMgmt(this);           // 告警管理界面
    m_pageDataMonitor = new pageDataMonitor(this);       // 数据监控界面
    m_pageDataAnalysis = new pageDataAnalysis(this);     // 数据分析界面
    m_pageUserUpdateInfo = new pageUserUpdateInfo(this);// 修改信息界面


    // 将页面添加到堆叠窗口
    ui->stackedWidget->addWidget(m_pageUserInfo);
    ui->stackedWidget->addWidget(m_pageDeviceInfo);
    ui->stackedWidget->addWidget(m_pageAlarmMgmt);
    ui->stackedWidget->addWidget(m_pageDataMonitor);
    ui->stackedWidget->addWidget(m_pageDataAnalysis);
    ui->stackedWidget->addWidget(m_pageUserUpdateInfo);

    // 创建按钮组来管理按钮的选中状态
    m_buttonGroup = new QButtonGroup(this);
    m_buttonGroup->addButton(ui->btnUserInfo);
    m_buttonGroup->addButton(ui->btnDeviceInfo);
    m_buttonGroup->addButton(ui->btnDataMonitor);
    m_buttonGroup->addButton(ui->btnAlarmMgmt);
    m_buttonGroup->addButton(ui->btnDataAnalysis);
    m_buttonGroup->addButton(ui->btnBackLogin);
    m_buttonGroup->setExclusive(true);

    // 默认选中第一个按钮
    ui->btnUserInfo->setChecked(true);
    ui->stackedWidget->setCurrentIndex(PAGE_USER_INFO);

    //信号连接
    connect(ui->btnUserInfo, &QPushButton::clicked, this, [=]() {
        ui->btnUserInfo->setChecked(true);
        ui->stackedWidget->setCurrentIndex(PAGE_USER_INFO);
    });
    connect(ui->btnDeviceInfo, &QPushButton::clicked, this, [=]() {
        ui->btnDeviceInfo->setChecked(true);
        ui->stackedWidget->setCurrentIndex(PAGE_DEVICE_INFO);
    });
    connect(ui->btnDataMonitor, &QPushButton::clicked, this, [=]() {
        ui->btnDataMonitor->setChecked(true);
        ui->stackedWidget->setCurrentIndex(PAGE_DATA_MONITOR);
    });
    connect(ui->btnAlarmMgmt, &QPushButton::clicked, this, [=]() {
        ui->btnAlarmMgmt->setChecked(true);
        ui->stackedWidget->setCurrentIndex(PAGE_ALARM_MGMT);
    });
    connect(ui->btnDataAnalysis, &QPushButton::clicked, this, [=]() {
        ui->btnDataAnalysis->setChecked(true);
        ui->stackedWidget->setCurrentIndex(PAGE_DATA_ANALYSIS);
    });

    // m_pageUserInfo信号槽连接
    connect(m_pageUserInfo, &pageUserInfo::display, this, &userLoginForm::onDisplayChanged);
    connect(m_pageUserInfo, &pageUserInfo::sendUsername, m_pageUserUpdateInfo, &pageUserUpdateInfo::receiveUsername);

    //连接点击btnBackLogin信号和发送display登录界面(0)信号
    connect(ui->btnBackLogin, &QPushButton::clicked, this, [=]() {
        // 重置界面状态
        ui->btnUserInfo->setChecked(true);
        ui->stackedWidget->setCurrentIndex(PAGE_USER_INFO);

        // 发送信号显示登录界面
        emit display(Widget::INDEX_MAINBAR);
    });
    // 连接 pageUserUpdateInfo 的 display 信号到内部堆叠布局
    connect(m_pageUserUpdateInfo, &pageUserUpdateInfo::display, this, [=]() {
        // 重置界面状态
        ui->btnUserInfo->setChecked(true);
        ui->stackedWidget->setCurrentIndex(PAGE_USER_INFO);
        // 发送信号显示登录界面
        emit display(Widget::INDEX_MAINBAR);
    });

    // 连接 pageAdminUpdateInfo 的 sendMessage 信号到当前类的槽函数
    connect(m_pageUserUpdateInfo, &pageUserUpdateInfo::sendMessage, this, &userLoginForm::onPageUserUpdateInfoMessage);
}

userLoginForm::~userLoginForm()
{
    delete ui;
}

void userLoginForm::onDisplayChanged(int index)
{
    ui->stackedWidget->setCurrentIndex(index);
}

void userLoginForm::onPageUserUpdateInfoMessage(const QString &message)
{
    // 转发消息
    emit sendMessage(message);
}
